今天就是學習java語言基礎的最後一天了,這十天從java歷史回顧一路過來到例外處理都是我認為比較基礎的東西,是比較重要的部分,同時分享的東西也比較基礎,進階的部分還是要花更多時間去學習消化的。
為什麼要有例外處理?因為我們在撰寫程式時無法考慮到面面俱到,即便當下執行時沒有出錯,也難保在其他狀況下不會有各種不尋常的情況發生,所以此時例外就有存在的必要了。
以下這些情況是在編譯時無法確定的,需要等到真正執行時才會知道哪裡出現了問題,為了能讓程式正常執行,需要做一些例外處理,繞過這些情況才能使其他程式碼正常執行。
有幾種常見的例外情況:
(1)要開啟的檔案不存在
(2)陣列存取時,陣列的索引值超出陣列容許的範圍
(3)原預期輸入的型態與時間輸入型態不同
(4)整數除以0的狀況
例如第2種情況就會用到ArrayIndexOutOfBoundsException這個例外
例外處理由三個區塊組成的,分別是try區塊、catch區塊和finally區塊
try{
//要檢查的程式敘述;
}
catch(例外類別 變數名稱){
//例外發生時的處理敘述;
}
finally{
//一定會執行的程式碼;
}
案以下順序來處理例外:
(1)try區塊有例外發生時,程式執行會中斷,然後拋出出例外類別產生的物件
(2)如果拋出的物件屬於catch()掛號內所捕捉的例外,catch會捕捉,並進到catch區塊執行
(3)無論是否有捕捉到例外,最終都會執行finally區塊的程式碼
(4)finally執行完成後會回到try-catch-finally區塊之後的地方繼續執行
如果我們想在try區塊捕捉一種以上的例外,就必須針對所有可能被拋出的例外撰寫catch()程式碼,這時候也要注意若要捕捉好幾種例外,範圍較小的要排在前面的catch()區塊裡,範圍大的排在後面。
我們也可以寫throw這個關鍵字主動拋出例外,程式碼如下:
throw 由例外類別所產生的物件;